home *** CD-ROM | disk | FTP | other *** search
/ Maclife 2 / MACLIFE02-No-82-1995.ISO.7z / MACLIFE02-No-82.ISO / 特集I / FTPd-240 / Documentation / Extra Documentation < prev    next >
Text File  |  1995-01-28  |  20KB  |  344 lines

  1. Remote Site Access Restrictions
  2.  
  3. You can limit the machines that can access your site by restricting access to certain ip ranges.  Because this would be very messy to do in a sensible user interface, the only way to set these restrictions is by using ResEdit.  From ResEdit, create a STR# resource (in either the FTPd Preferences file or FTPd (the former overrides the latter), give it an id in the range of 600-699, and a name ending of:
  4.  
  5. メ<username> Site Restrictionモ where <username> is the user you are restricting.
  6. メOwner Site Restrictionモ to restrict the owner.
  7. メUser Site Restrictionモ to restrict any unspecified user.
  8. メAnonymous Site Restrictionモ to restrict anonymous logins.
  9. メDefault Site Restrictionモ to restrict anyone not specified above.
  10.  
  11. FTPd checks them in that order (for gopher restrictions, it checks Anonymous Site Restriction or Default Site Restriction).  Each resource consits of a sequence of pairs, ip number, ip mask, both in dotted decimal format (eg 134.7.70.70).  The remote ip is checked against the ip, with only the bits in the mask being relevent.  If it matches then the user is allowed access.  If it matches, but the ip string started with an exclamation mark then access is disallowed.  The last match opverrides previous ones, and if there are no matches then access is denied.
  12.  
  13. By default, FTPd has a single メDefault Site Restrictionモ STR# resource, which contains 0.0.0.0, 0.0.0.0 so access is allowed from anywhere.
  14.  
  15. Here are some examples, first if you just wanted to restrict anonymous logins to inside 134.7, and everyone else has no restriction, then you create two STR# resources, either in FTPd Preferences (which is checked first) or FTPd, like this:
  16.  
  17. メAnonymous Site Restrictionモ: 134.7.0.0,255.255.0.0
  18.  
  19. You don't need to create the メDefault Site Restrictionモ, because it already exists in FTPd, if you wish to override the default, either change it in FTPd or add a メDefault Site Restrictionモ to FTPd Preferences.
  20.  
  21. Ok, and a more complicated one, say you wanted anonymous access to everywhere inside 134.7 except 134.7.70.70, user access to everywhere inside 134.7 and 130.95, user "Fred" and the owner access from everywhere, do this:
  22.  
  23. メAnonymous Site Restrictionモ: 134.7.0.0,255.255.0.0, !134.7.70.70,255.255.255.255
  24. メUser Site Restrictionモ: 134.7.0.0,255.255.0.0, 130.95.0.0,255.255.0.0
  25. メOwner Site Restrictionモ: 0.0.0.0,0.0.0.0
  26. メFred Site Restrictionモ: 0.0.0.0,0.0.0.0
  27.  
  28. Note: These restrictions apply only to the control connection, not the data transfer connections, so it is still possible to use proxy-ftp to transfer files directly to a restricted machine, but the user must be connected from an allowed site.
  29.  
  30. Warranty
  31.  
  32. This program should do what Iユve described in this document.  If it doesnユt, you can simply stop using it.  If you pay me, and within a year find that it doesnユt do what I describe here, then you can notify me and I will refund your money and cancel your license.
  33.  
  34. Fine Print
  35.  
  36. Peter Lewis hereby disclaims all warranties relating to this software, whether express or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose.  Peter Lewis will not be liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if Peter Lewis or an agent of his has been advised of the possibility of such damages.  In no event shall Peter Lewis be liable for any damages, regardless of the form of the claim.  The person using the software bears all risk as to the quality and performance of the software.
  37.  
  38. US Governement:
  39.         Government End Users:  If you are acquiring the Software and fonts
  40. on behalf of any unit or agency of the United States Government, the
  41. following provisions apply.  The Government agrees:
  42.         (i) if the Software and fonts are supplied to the Department of
  43. Defense (DoD), the Software and fonts are classified as "Commercial
  44. Computer Software" and the Government is acquiring only "restricted rights"
  45. in the Software, its documentation and fonts as that term is defined in
  46. Clause 252.227-7013(c)(1) of the DFARS; and
  47.         (ii) if the Software and fonts are supplied to any unit or agency
  48. of the United States Government other than DoD, the Government's rights in
  49. the Software, its documentation and fonts will be as defined in Clause
  50. 52.227-19(c)(2) of the FAR or, in the case of NASA, in Clause
  51. 18-52.227-86(d) of the NASA Supplement to the FAR.
  52.  
  53. Acknowledgements
  54.  
  55. Thanks to RobT for suggesting the idea, to Quinn for demanding the use of System 7 U&G, and to Jager for figuring out how! Thanks to Quinn (again :) for the amazing icons and to Greg for colouring them in.  And special thanks again to Jager and Quinn for figuring out my asnyc problems!  And, of course, thanks to Stuart for delaying the release of this program for ages by making LOTS of suggestions, finding LOTS of bugs, and by writing Bolo! Thanks also to the UCC, Todd, Steve, c.s.m.p, archie.au, ftp.apple.com, Farhad, Tom, Andr'e, Aron, Ben, David, Gregory, Guy, Igor, Jim, John, Ken, Leonard, Frederic, Pete, Peter, Richard (who won the award for the most mail messages (after Quinn)), Rob, Russell, Thede, Tom, Zep, and anyone who uses FTPd!  
  56.  
  57. I canユt describe how important the beta testers have been in making FTPd what it is, without them FTPd would not be a shadow of what it is now.  So speacial thanks go to all of you who made suggestions or pointed out problems.  I tried to list you all, but I gave up, there are just too many.  Some of you made so many suggestions I couldn't count them all.  Some of you analyised the network packets to find out what was happening and explained where I was going wrong.  Some decompiled my code and sent it back to me with corrections.  Some made suggestions that involved tiny changes with great benefits.  Some made outrageous demands which I refused to do, and others outrageous demands which I eventually did.  All of these would have been missing if I was working on my own.  Thanks.
  58.  
  59. Thanks also to Mike Marburger for the closing sound.
  60.  
  61. How It Works
  62.  
  63. FTPd listens for TCP connections on port 21.  When a connection is achieved, it waits for commands to be sent to it.  Commands all have a simple form, there is a 3 or 4 character command (eg, RETR for retrieve file), and some parameters (eg, filename).  FTPd interprets these commands, carries out there actions, and replies with a one line message, the first three characters of which are a 3 digit reply that can be interpreted by the FTP client, then the rest is human readable information.  The reply codes are 1yz for preliminary success (action started), 2yz for complete success (action finished successfully), 3yz for intermediate success (requires another command before any action is taken), 4yz for temporary failure (try again later), and 5yz for permanent failure (give up and go home).  For more information on the formats of these commands see the various FTP related RFCs.  Some commands may reply with a multiline response, in which the first line begins with a three digit response code followed by a dash メ-モ followed by several lines of text and terminated by a line with the same response code and a space followed by some text.  This confuses some servers, you can disable this feature by starting your username or password with a dash メ-モ.
  64.  
  65. FTPd also listens to port 70 for gopher connections.  It then accepts a single line specifying either a folder, file, or index, and returns the info for it.  The gopher server logs in as an AppleShare guest user, so guest access must be enabled (it was either that, or FTPd would have to know a user password, which I want'ed to avoid).  The root of the gopher tree is specified by the login directory for fake user メGopherモ (it defaults ot /).  This root is enforced, so you canユt have aliases pointing to folders outside this area (well, you can, but it won't work very well) (aliases to files outside the area work).  You can reduce this restriction with the メGopherRootモ user directory, but that will allow anyone knowledgable in the gopher protocol to get at any file inside that root.
  66.  
  67. FTPd talks to the file system on the local Mac (and other servers) exclusively by using the same protocols as if it were accessing an AppleShare server (the single exception is the startup messages which are read via normal file system calls).  The user logs in by giving a user name and password.  This in turn is passed to the System 7 server (or AppleShare server) and an attempt is made to log in to the server.  If the log in fails, and attempt is made to log in as a guest user.  If either attempt succeeds, the volume is made available to the user.  If the user tries to log in as either the owner or a user, they must successfully (non-anonymously) log in to at least one local volume or the whole connection is disallowed.  Since all file system access is done through the AppleShare protocols, it should be virtually impossible to circumvent their protections.  You should set up your system in such a way that irrespective of the privileges in FTPd Setup (which are not guaranteed in any way!) the user can not do too much damage.  Thus users and guest should only have write privileges to areas of your file system that you wish them to be able to trash.
  68.  
  69. Version History
  70.  
  71. 2.4.0d5
  72. ~Use %20 if a file name starts or ends with a space
  73. ~Added a preference for None, Speak, Play Sound connection notification.
  74. ~Fixed a problem with freezes during login
  75. ~Fixed? a problem with ABORting the connection.
  76.  
  77. 2.4.0d3
  78. ~Universal Interfaces - ouch.
  79. ~Summary window.
  80. ~dont swallow returns in the Initial Command field.
  81. ~Use %FF for unprintables in paths.  Accept %FF or =FF.
  82. ~geneva 9 log window
  83. ~warnings on ASCII/dataforkonly transfers of files that require Binary/resources
  84.  
  85. 2.4.0d2
  86. ~STR# 180 maps file types to gopher types
  87. ~support gopher type "-" (ignore)
  88. ~Hide the "!Gopher Links" file
  89. ~Internet Config support
  90. ~Use only english months, otherwise it confuses clients like Anarchie
  91. ~speak text doesn't work?
  92. ~listing a directory with no files gives an error.
  93. ~file sharing disabled error instead of -1025.
  94. ~SIZE blib returns garbage instead of an error
  95.  
  96. 2.3.0d10
  97. Added SITE V statistics
  98. Added "I Paid" flag
  99. Changed from // to =3D and =2F encoding (MIME-like)
  100. Limit SITE INDEX to 1000 entries
  101. Fixed evil evil crashing bug
  102. Fixed SMNT problems
  103.  
  104. 2.3.0d1
  105. Vastly simplified FTPd Setup
  106. Removed 200 file limit of searches and directory listings
  107. Much improved transfer speeds in most cases
  108. Complete rewrite of the login code
  109. Complete rewrite of the AFP code
  110. Async IO for all transfers
  111.  
  112. 2.2.1d1
  113. ~FTPd Setup Gopher Listing could crash.
  114. ~Read the prefs file only when the mod date changed
  115. ~!Gopher Links file inside an alias to a folder didn't work
  116.  
  117. 2.2.0d1
  118. ~Use port 20 for Active data connections, should improve behavious with firewalls
  119. ~Attempt to support A/UX's lack of mtcp gestalt selector
  120. ~Support append (APPE) command
  121. ~Support for the SIZE command (but its approximate!)
  122. ~Put FTP and gopher port (21&70) into STR# resources
  123.  
  124. 2.1.1d4
  125. ~Added option to display file size in gopher listsings
  126. ~Added support for TextToSpeach manager
  127. ~Fixed gopher error message
  128. ~Fixed bug that stopped gopher type changes from being saved
  129. ~added メsafegetモ feature to simplify prefs management
  130. ~Added CautionAlert for Server and Far Server privs
  131.  
  132. 2.1.1d3
  133. ~Handle the virtual "." directory (for current directory)
  134. ~Fixed FillWindow to work with small log files.
  135. ~Fixed JPEG and GIFf gopher display
  136. ~added handling for LIST *.hqx, so mget *.hqx works.
  137.  
  138. 2.1.0d3
  139. ~Improved security, users and owner MUST log in to at least one local volume.
  140. ~Fixed SMNT and SITE commands to allow slashes
  141. ~Minor change to balloon help
  142. ~Fixed ":" option in Prefs window (wasnt being saved)
  143.  
  144. 2.1.0d2
  145. ~Gopher window add link etc selects item
  146. ~Notification sound for connections□.
  147. ~Option to hide log window when in the background.
  148. ~GIF,JPEG support?
  149. ~Way to specify the host name for this Mac.
  150. ~gopher remote telnet
  151. ~Implement the Security window to give control over what commands are allowed
  152. ~If you open preferences (in this case the default use logon path), and make a change eg the default path, then click "Cancel" the change is applied anyway.
  153.  
  154. 2.1.0d1
  155. ~support SITE A QUIT <creator>, SITE A OAPP <creator>, and SITE A LIST.
  156. ~added -t option to listings to display the type/creator of files.
  157. ~button for Edit Attributes - double click should not be required
  158. ~option-double clicking Folders open's a new Gopher Listing Window.
  159. ~support SMNT Volume:Server[@Zone][:username[:password]] - mount a volume.
  160. □~Sort the gopher directory.
  161. ~TurboGopher+1.6 sends "<tab>+" invalid line to FTPd? - accept and ignore it
  162. ~Debilitatin Gopher bug that leaves all the files/folders unaccessible.
  163. ~Doesn't notice enabling gopher without restarting FTPd.
  164. ~No balloon help for Add index Entry.
  165. ~Retry count balloon help and static text messages differ.
  166. ~Drop folders don't have the x bit set.
  167. ~PASV command doesn't work with proxy ftp?
  168. ~FTPd doesn't notice changes to the translation prefs unless restarted.
  169. ~Fixed some capitilizations in the various FTPd Setup windows.
  170.  
  171. 2.0.1 Fourth release (1 day later!)
  172. ~Fixed a bug in FTPd Setup that could eat users' files.
  173.  
  174. 2.0.0 Third release
  175.  
  176. 2.0.0d17
  177. ~FTPd Setup, Gopher Listing needs to recognize Aliases to folders.
  178. ~Fixed a glitch with listing a folder with a single folder in it
  179. ~Changed the log strings abit to allow easier parsing.
  180.  
  181. 2.0.0d14
  182. ~Send "Transfer Finished" after last send in Send Format (might speed up the close)
  183. ~Long TCP close time after file transfer?
  184. ~Disabled some DebugStrs that probably shouldnt have been there.
  185. ~Reduce the size of Get and List connections
  186. the combination of those three caused these crashes:
  187. ~File transfer crashes - Scott Gruby
  188. ~Listing crashes - John Norstad
  189. ~Fixed a bug that caused alias resolution to fail (forgot to initialize the path, oops)
  190. ~Added GopherRoot user to allow aliases to point outside the Gopher tree.
  191. ~Link files owned by FTPd Setup, double clicking them opens Gopher Listing.
  192. ~Don't add .hqx to the end of folder aliases
  193. ~SetPort to stop List Clicks in Gopher Listing from failing (maybe)
  194.  
  195. 2.0.0d10
  196. ~Long TCP close time after file transfer - might help.
  197. ~Alias support - its impossible, but do it anyway.
  198. ~Option to disable .hqx in gopher listings
  199. ~Preference for ignoring /
  200. ~Need to do reverse name lookup for name
  201. ~Don't list folders the user can't access
  202. ~Extend close timeout from 20 seconds to 2 minutes - THANKS JOHN!!!!!
  203.  
  204. 2.0.0d8
  205. ~archie-like index support
  206. ~SITE INDEX as a synonym for SITE F
  207. ~Only log in to volumes you can access (Gopher and FTP)
  208. ~Gopher logging
  209. ~editable type field
  210. ~Gopher links not read by gopher listing?
  211. ~Support user directory for user "gopher" to set the gopher root
  212. ~Handle Revert on user directory listing properly
  213.  
  214. 2.0.0d7
  215. ~Gopher UI for defining links and renaming files
  216. ~Enable/Disable FTPd/Gopher independently
  217.  
  218. 2.0.0d6
  219. ~Support Scrambled&Two-way passwords.
  220.  
  221. 2.0.0d5
  222. ~Fixed an annoying bug that caused the server to occasionally lock connections up.
  223. (if it got more than 10 events in a row, it lost the last one!)
  224. ~Run in either foreground or background depending on the SIZE=-1 backgroundonly bit
  225. ~Foreground log window
  226.  
  227. 2.0.0d2
  228. ~IP restrictions (as for ftp, but username gopher, userkind Guest).
  229. ~Fixed a bug that could give spurious errors during MacBinary receives.
  230.  
  231. 2.0.0d1
  232. ~Initial gopherd implementation
  233.  
  234. 1.2.0d3
  235. ~A way of setting folder privs
  236.  
  237. 1.2.0d2
  238. ~Support options to NLST and LIST -CspFl (cols, size in k, dir/, long)
  239. ~A way of changing passwords.
  240.  
  241. 1.2.0d1
  242. ~Handle changing from EtherTalk <-> Localtalk network connections.
  243.  
  244. 1.1.0 - Second official release
  245.  
  246. 1.1.0d10
  247. ~Fixed a async crash bug
  248. ~Display the trasfer size in メgetモ commands.
  249. ~Use Fetch Preferencesユ suffix mappings to set the type/creator on binary putユs.
  250.  
  251. 1.1.0d8
  252. ~More than 100 files in a directory. - now 200.
  253. ~Transfer speed - via transfer buffer sizes - buffer sizes were increased 2.5 times
  254. ~Access to files with a / in their name by doubling the /
  255. ~Notice write protected folders and refuse the STOR etc commands immediately
  256. ~Drop folder writes don't work.
  257. ~ISO character translation on file names and TEXT files
  258. ~Added Remote Site Restrictions
  259. ~Fixed a bug that caused problems if there was more than 20 servers in your zone
  260. ~Changed "Add .hqx" to not add .hqx for TEXT files
  261. ~Fixed an address error crash on 68000 machines
  262. ~Fixed a ReleaseResource/DisposHandle bug
  263. ~Fixed a bug with GetMHandle and PopupMenus (well, Apple fixed a bug which broke my code, so I fixed my code, hope it doesnユt break Appleユs! :-)
  264.  
  265. Think about it - all the following happened before FTPd was even released to the public:
  266.  
  267. 1.0.9 - First Official Release
  268. ~Added Balloon Help to FTPd Setup
  269.  
  270. 1.0.9b
  271. ~Changed to use a limited number of async logins to avoid problems with XPP
  272. ~Locks up looking for a server - added timeout and fixed a bug.
  273. ~Fixed a security loophole - disabling all access to users and guest didn't always.
  274. ~Added support for ls -F
  275. ~An option to add ".hqx" to the end of all file names in all listings.
  276. ~Removed the distinction between Local and Shared Points (whatever it was before :)
  277.  
  278. 1.0.8b
  279. ~Added logging of login failures.
  280. ~Added the number of volumes to the login message.
  281. ~Send a sensible message when file sharing is not active.
  282. ~Fixed a bug with SITE F which locked up if it found >100 files.
  283. ~Fixed an evil evil bug with Async logins.
  284. ~Changed lists unit to be ptr based instead of handle based.
  285. ~Closed the volumes before logging out so the Finder updates the little heads correctly.
  286.  
  287. 1.0.7b
  288. ~Fixed a bug that caused problems if the Start or Folder Info files were to big.
  289. ~Improved Server logins, it should now not freeze your Mac and should be faster to login in, though still very slow.
  290. ~Fixed a bug that made FTPd miss the start of binhex files.
  291. ~Changed SITE X to SITE Q.
  292. ~Added help on SITE ? commands: remotehelp "site f" for example...
  293.  
  294. 1.0.6b
  295. ~Fixed an annoying NBP lookup bug.
  296. ~Translate 8 bit to 7 bit characters when sending ascii files.
  297. ~Added command SITE F <filename> to return all the matching filenames.
  298. ~Fixed a bug that might speed up RETRieves a bit (and was very stupid!)
  299. ~Added username to all log entries (get, put, del, etc)
  300. ~Added primitive AE support to FTPd Setup
  301.  
  302. 1.0.5b
  303. ~Added a checkbox to disable the log file (and disable it by default)
  304. ~Restructure the files/folders used by FTPd.  There is now a folder called メFTPd Preferences トモ in the Preferences folder that contains the FTPd Preferences file, the FTPd Log file, and optionally the Startup Messages folder (which can also reside in FTPdユs folder).
  305. ~Name Startup Message file is displayed to user Name on login.
  306. ~Start the messages on the NNN- line (so NNN-first line of file).
  307. ~Fixed it so that file names that start with a space are handled correctly.
  308. ~Changed it so that Thingy Startup & !Folder Info are both returned at startup.
  309. ~Fix a bug with the time stamps in MacBinary files.
  310.  
  311. 1.0.4b
  312. ~Far servers
  313. ~Improved error reporting.
  314. ~Fix a bug that caused retrieves to fail.
  315.  
  316. 1.0.3b
  317. ~Honour invisible files.
  318. ~Maximum of 48 files listed (4k limit I expect).  Should be maximum of 100 (or more even?).
  319. ~Include GetInfo comments in MacBinary transfer.
  320. ~User definable text displayed on startup and dir entry?
  321. ~Maximum number of users.
  322. ~Idle time out setting.
  323. ~User time restrictions? Suport "only after X, or before Y" time restriction.
  324.  
  325. 1.0.2b
  326. ~terminate the connection after five minutes or three failed logins.
  327. ~Support logins only when mac is idle.
  328. ~Support copy_inhibit.
  329. ~Fix up CRC calculation in MacBinary code.
  330. ~MacBinary and/or BinHex still broken - think I've got all the bugs out.
  331.  
  332. 1.0.1b
  333. ~Close connection after three failed logins.
  334. ~QuitBoth in Setup.
  335. ~Abort fails
  336. ~Background only app
  337.  
  338. 1.0.0b
  339. ~Notice prefs changes on the fly.
  340. ~Prefs for login directories.
  341. ~Doesnt start up MacTCP by itself.
  342. ~Fix log.
  343. ~Prefs for MacBinary default on/off.
  344.